package cn.iocoder.yudao.module.reading.service.community;

/**
 * 社区计数缓存服务接口
 *
 * @author 芋道源码
 */
public interface CommunityCountCacheService {

    /**
     * 增加帖子点赞数缓存
     *
     * @param postId 帖子ID
     * @param increment 增量（1或-1）
     * @return 当前点赞数
     */
    Long incrementPostLikeCount(Long postId, int increment);

    /**
     * 增加帖子评论数缓存
     *
     * @param postId 帖子ID
     * @param increment 增量（1或-1）
     * @return 当前评论数
     */
    Long incrementPostCommentCount(Long postId, int increment);

    /**
     * 增加评论点赞数缓存
     *
     * @param commentId 评论ID
     * @param increment 增量（1或-1）
     * @return 当前点赞数
     */
    Long incrementCommentLikeCount(Long commentId, int increment);

    /**
     * 获取帖子点赞数（优先从缓存获取）
     *
     * @param postId 帖子ID
     * @return 点赞数
     */
    Long getPostLikeCount(Long postId);

    /**
     * 获取帖子评论数（优先从缓存获取）
     *
     * @param postId 帖子ID
     * @return 评论数
     */
    Long getPostCommentCount(Long postId);

    /**
     * 获取评论点赞数（优先从缓存获取）
     *
     * @param commentId 评论ID
     * @return 点赞数
     */
    Long getCommentLikeCount(Long commentId);

    /**
     * 同步缓存数据到数据库（定时任务调用）
     */
    void syncCountsToDatabase();

}
